package com.example.demo.main.rabbitmq.exchange.direct.hello;

import com.example.demo.main.rabbitmq.utils.RabbitmqConnectionUtil;
import com.example.demo.utils.DateUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;


/**
 * @author xieluoyin
 *  2018/8/5 19:00
 */
public class Sender {
    private final static String QUEUE_NAME = "testHello";

    public static void main(String[] args) throws Exception {
        //获取连接
        Connection connection = RabbitmqConnectionUtil.getConnection();
        //创建通道
        Channel channel = connection.createChannel();

        /*  声明队列，如果队里存在则什么都不做
         *  queueDeclare方法参数：
         *  第一个参数表示队列名称、
         *  第二个参数为是否持久化（true表示是，服务器重启仍存在此队列）、
         *  第三个参数为是否是独占队列（创建者可以使用的私有队列，断开后自动删除）、
         *  第四个参数为当所有消费者客户端连接断开时是否自动删除队列、
         *  第五个参数为队列的其他参数
         */
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        /*  发送消息
         *  basicPublish方法参数：
         *  第一个参数为交换机名称、
         *  第二个参数为队列映射的路由key、
         *  第三个参数为消息的其他属性、
         *  第四个参数为发送信息的主体
         */
        for (int i = 0; i < 5; i++) {
            String message = "Hello World!  " + DateUtil.getSimpleDateFormat().format(System.currentTimeMillis());
//     * @param exchange the exchange to publish the message to
//     * @param routingKey the routing key
//     * @param props other properties for the message - routing headers etc
//     * @param body the message body
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println("  【Sender】Sent '" + message + "'");
            Thread.sleep(2000);
        }

        //关闭连接
        channel.close();
        connection.close();
    }
}
